package com.hyt.it.ogt.kq.service.admission;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hyt.it.ogt.kq.service.gov.model.dto.admission.AddOrUpdateAdmissionTemplateDTO;
import com.hyt.it.ogt.kq.service.model.entity.admission.AdmissionTicketInfo;
import com.hyt.it.ogt.kq.service.model.entity.admission.AdmissionTicketTemplate;
import com.hyt.it.ogt.kq.service.gov.model.vo.admission.AdmissionStandardTemplateVO;
import com.hyt.it.ogt.kq.service.gov.model.vo.admission.AdmissionTemplateVO;
import com.hyt.it.ogt.kq.service.gov.model.vo.admission.TemplateConfigVO;
import com.hyt.loginfo.model.Organization;
import com.hyt.loginfo.model.User;

import java.util.List;

/**
 * <p>
 * 准考证模板表 服务类
 * </p>
 *
 * @author yanghuankun@talkweb.com.cn
 * @since 2023-01-10
 */
public interface IAdmissionTicketTemplateService extends IService<AdmissionTicketTemplate> {

    /**
     * 获取标准模板列表
     *
     * @return
     */
    List<AdmissionStandardTemplateVO> standardList();

    /**
     * 获取准考证任务可以使用的模板
     *
     * @param officeId
     * @param deptId
     * @param admissionTicketInfoId
     * @return
     */
    List<AdmissionTemplateVO> admissionTicketTemplate(String officeId, String deptId, String admissionTicketInfoId);

    /**
     * 创建自定义模板
     *
     * @return
     */
    AdmissionTicketTemplate createCustomTemplate(User currentUser, String deptId);

    /**
     * 更新准考证模板的准考证任务id
     *
     * @param admissionTicketInfoId
     * @param templateId
     * @param currentUser
     */
    void updateAdmissionTicketInfoId(String admissionTicketInfoId, String templateId, User currentUser);

    /**
     * 通过模板id判断是否标准模板
     *
     * @param templateId
     * @return
     */
    boolean isStandardTemplate(String templateId);

    /**
     * 删除模板
     *
     * @param admissionInfoId
     * @param currentUser
     * @param deptId
     */
    void deleteTemplateByAdmissionInfoId(String admissionInfoId, User currentUser, String deptId);

    /**
     * 新增或者更新准考证模板
     *
     * @param user
     * @param deptInfo
     * @param addOrUpdateAdmissionTemplateDTO
     * @return
     */
    void update(User user, Organization deptInfo, AddOrUpdateAdmissionTemplateDTO addOrUpdateAdmissionTemplateDTO);


    /**
     * 通过准考证id查询准考证模板
     *
     * @param admissionInfoId
     * @return
     */
    AdmissionTicketTemplate getByAdmissionInfoId(String admissionInfoId);

        /**
         * 获取模板详情
         *
         * @param admissionId
         * @return
         */
    AdmissionTemplateVO byAdmissionId(String admissionId);

    /**
     * 获取模板的可选配置
     *
     * @param admissionId
     * @param user
     * @param deptInfo
     * @return
     */
    List<TemplateConfigVO> listTemplateConfig(String admissionId);

    /**
     * 准考证是否已经保存了自定义模板
     *
     * @param admissionTicketInfoId
     * @return
     */
    Boolean isSaveCustomTemplate(String admissionTicketInfoId);

    /**
     * 准考证是否已经保存了模板
     *
     * @param admissionTicketInfo
     * @return
     */
    Boolean isSaveTemplate(AdmissionTicketInfo admissionTicketInfo);
}
